# 3、global语句
def spam():
    global eg  # gloabl ：指eg是全局变量，不要用这个名字创建一个局部变量。在一个函数内修改全局变量
    eg = 'Hello'


eg = 'World'  # 全局变量
print(eg)
spam()
print(eg)
'''
Hello
'''


# 二 、异常处理
def divd(yusu):
    try:
        s = 10 / yusu
        return s
    except ZeroDivisionError:
        print('Error: yusu')


print(divd(2))
print(divd(3))
print(divd(0))
print(print('Error: yusu'))
'''
5.0
3.3333333333333335
Error: yusu
None
Error: yusu
None
'''
# 三、列表
lb = [[1, 2, 3], ['Hello', 'World']]
print(lb)
print(lb[0])
print(lb[1][0])
'''
[[1, 2, 3], ['Hello', 'World']]
[1, 2, 3]
Hello
'''
la = ['Luck', 'Good']
# 列表连接
lc = la + lb
print(lc)
'''
['Luck', 'Good', [1, 2, 3], ['Hello', 'World']]
'''
#  三、字符串类似于列表的类型
strs = 'Hello'
print(strs[0])
print(strs[0:2])
print('H' in strs)
print('HE' not in strs)
for i in strs:
    print(i)
'''
H
He
True
True
H
e
l
l
o
'''
# 字符串与列表最大的不同是字符串不能修改，只能利用切片和连接构成一个新的字符串
# TypeError: 'str' object does not support item assignment
'''
strs[1] = 'MM'
print(strs)
'''
# 四、元组   (元组和字符串一样不能修改)
egges = ('apple', 'orgs', 'men')
print('egges: ', egges)
'''
egges:  ('apple', 'orgs', 'men')

'''
# egges[0] = 'iphone'
# print(egges)
'''
TypeError: 'tuple' object does not support item assignment
'''
# 字符串，列表、元组之间转换
print(list(('ab', 'cd')))
'''
['ab', 'cd']
'''
print(tuple(['aa', 'cc']))
'''
('aa', 'cc')
'''
print(list('aaa'))
'''
['a', 'a', 'a']
'''
print(tuple('bbb'))
'''
('b', 'b', 'b')
'''
'''
变量包含对列表值的引用， 而不是列表值本身。但对于字符串和整数值， 变量
就包含了字符串或整数值。在变量必须保存可变数据类型的值时， 例如列表或字典，
Python 就使用引用。对于不可变的数据类型的值， 例如字符串、 整型或元组， Python
变量就保存值本身。
'''
# 列表引用
eggs = ['apple', 'orgs', 'men']
dee = eggs
dee[0] = 'hahha'
print(eggs)
print(dee)
'''
['hahha', 'orgs', 'men']
['hahha', 'orgs', 'men']
'''
import copy

a = copy.copy(eggs)
print(a)
a[0] = 'Hello'
print(a)
print(eggs)
'''
['hahha', 'orgs', 'men']
['Hello', 'orgs', 'men']
['hahha', 'orgs', 'men']
'''
